Skip to content

feat(rl,#18171): bras trl.experimental.ppo.PPOTrainer remis en service dans rlpt_0f - #18191

Merged
myia-ai-01 merged 6 commits into
mainfrom
feature/18171-rlpt-ppo-arm
Sep 30, 2026
Merged

myia-ai-01 merged 6 commits into
mainfrom
feature/18171-rlpt-ppo-arm

Conversation

@jsboige

@jsboige jsboige commented Sep 28, 2026

Copy link
Copy Markdown
Owner

Grain: DEEP/CONTENU (RL notebook) -- lane myia-po-2026:CoursIA

resume

Bras trl.experimental.ppo.PPOTrainer (le trainer historique deplace, pas supprime) remis en service dans rlpt_0f en section 5bis, aux cotes du bras maison et du bras GRPO. Fille de #16063 (item 6), voir #18171.

Changes

  1. Section 5bis (5 cellules nouvelles) :
    • Juge Bradley-Terry reconstruit au format lib (GPT2ForSequenceClassification, backbone + tete .score() -- la voie exacte de trl get_reward), meme recette BT que la section 2 (paires derivees de la vraie recompense, min_gap 0.3, flip probabiliste), sur reponses brutes (tout le vocab) puisque get_reward evalue la sequence telle que generee.
    • train_ppo_trl : boucle PPO complete tenue par la lib -- rollout max_new_tokens, score du juge, GAE (gamma/lam), PPO-clip policy ET value (critic GPT2ForSequenceClassification appris en ligne, vf_coef=0.5), penalite KL par token (kl_coef=BETA_KL=0.05). Budget apparie : 2304 prompts x 1 passe = 2304 completions (12 updates x 192).
    • 3 lectures chiffrees ecrites avec les mesures reelles (juge, bras, tableau final 3 colonnes).
  2. Cellule env corrigee : le check testait hasattr(trl, 'PPOTrainer') (surface racine uniquement) et la prose disait « supprime » -- desormais l'assert teste la surface ou la classe vit reellement (racine vide + trl.experimental.ppo present), prose « deplace » (points 1-2 de l'acceptance). Lecture chiffree d'ouverture (le fait qui organise le notebook) reecrite sur ce narratif.
  3. Sections 7/8 etendues : tableau final 3 bras (LOC AST-comptees : 60 / 36 / 85, meme convention), ligne de lecon corrigee (deplace upstream, pas supprime).
  4. README RL ligne pt-0f mise a jour (le fait structurant decrit change : « a quitte la racine... remis en service en 3e bras »).

Multi-seed section 6 (maison vs GRPO) inchange par design : le bras historique est demontre au seed 0 (section 5bis autonome), le cout CPU d'un 3e bras multi-seed n'apportant rien a la question posee par l'issue.

Proof of execution (H.1/D)

  • Execution complete via notebook_tools.py execute --kernel coursia-sae (env local coursia-sae : python 3.11.16, torch 2.14.0+cpu, trl 1.9.2 -- la version citee par la mesure ai-01 dans l'issue, seule surface ou trl.experimental.ppo existe). EXEC_PROVED : Success 1 / Failed 0, 644.6 s total.
  • Extraits des sorties reelles :

cellule env (surface testee) :

python 3.11.16 | torch 2.14.0+cpu | transformers 5.17.0 | trl 1.9.2 | datasets 5.0.1
trainers trl (racine) : DPOTrainer, GRPOTrainer, KTOTrainer, RLOOTrainer, RewardTrainer, SFTTrainer
PPOTrainer a la racine : False
PPOTrainer (reel) : trl.experimental.ppo.ppo_trainer

cellule juge (section 5bis) :

RM-GPT2 (juge du bras historique) entraîné en 86.2s
accord du juge avec la vraie récompense (spearman, 300 réponses brutes) : 0.546

cellule bras (section 5bis, fin du run) :

{'eps': 411, 'objective/kl': '0.4142', 'objective/scores': '0.4958', 'loss/value_avg': '0.2941', ..., 'episode': 2304, 'epoch': '1'}
[Bras historique | trl.experimental.ppo.PPOTrainer]  13.7s
vraie récompense : 0.219 -> 0.959  (bruit de fond 0.487)
log trl-ppo : scores=0.496 kl=0.414 vf_loss=0.294 eps=411

tableau final (section 7) :

                                 PPO maison    trl.GRPOTrainer     trl.PPOTrainer
gain vraie récomp.                    0.486              0.670              0.739
dispersion (std)                      0.205              0.102      (seed 0 seul)
temps moyen / run                       59s                41s                14s
lignes de code                           60                 36                 85
  • grep -nE "raise NotImplementedError|assert False|1/0" : 0 hit.
  • Cellules code : execution_count consecutifs 1..16, outputs coherents (C.2 ; les 2 cellules sans outputs sont des definitions pures, exec non-null). Exercices 1-3 conserves en stubs (3/3).
  • notebook_tools.py validate : 0 erreur (5 warnings LaTeX preexistants sur main, faux positifs $ apparies).
  • Diff anti-regression : 38 -> 43 cellules (+5 section 5bis), 2 cellules code modifiees (env, tableau) declarees au body, 0 cellule supprimee.

Verdict SOTA (sota-not-workaround Prong A) : SOTA-OK

Le vrai trl.experimental.ppo.PPOTrainer est installe (pip trl==1.9.2 dans env dedie cree localement, regle F) et invoque ; les sorties commitees sont sa vraie sortie. Cas de l'issue : RECOVERABLE-LOCAL traite par installation + invocation reelle.

Acceptance #18171 mapping

  1. Bras PPO complet (RM + value head/critic + GAE) sur la meme mini-tache, GRPO reste : OK (section 5bis, le GRPO section 5 intact).
  2. Phrase « supprime » + assert cellule 1 corriges (surface reelle testee) : OK.
  3. Bras tourne (aucune erreur a documenter) : OK -- le bras ne casse pas, verdict non-INTRINSIC.
  4. Re-exec complete + sorties + 3 exercices conserves : OK.

Closes #18171
See #16063

🤖 Generated with Claude Code

…e dans rlpt_0f

Section 5bis nouvelle : juge BT reconstruit au format lib (GPT2ForSequenceClassification,
voie exacte de get_reward) + train_ppo_trl (PPO complet : rollout, GAE, PPO-clip policy
et value, KL par token ; 2304 completions, budget apparie). Assert cellule env corrigee
(surface reelle trl.experimental.ppo, pas seulement la racine), prose supprime->deplace,
tableau final 3 bras (LOC 60/36/85), README pt-0f mis a jour. Re-exec complete kernel
coursia-sae (trl 1.9.2) : 644.6 s, 0 erreur, outputs commites (C.2), 3 exercices conserves.

See #16063

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@github-actions github-actions Bot added consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797) variation-tag-genre-offlist GENRE hors de l'enumeration variation-protocol §1 variation-tag-prev-absent Tag Grain sans 'prev: <TIER>/<GENRE> #<PR>' (adjacence G-VAR-3 inevaluable) labels Sep 28, 2026
@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Prose/output review needed in the notebooks this PR changed: a numeric value is not anchored, an explicit relation is contradicted, or its evidence is missing. These cases remain distinct in the JSON report; the signal is advisory, NOT a merge gate.

Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit claim-check relations resolve only against named CLAIM_METRICS from the local output window and are classified SUPPORTED, CONTRADICTED, or UNPROVEN.
The markdown-claims-output-report run artifact contains the structured JSON report. See python scripts/check_markdown_claims_output.py --help for re-running locally.
Detector rationale: c.290 / c.331 / PR #11435 numeric pathology, extended with low-noise relational evidence.

@github-actions

github-actions Bot commented Sep 28, 2026 •

Copy link
Copy Markdown
Contributor

No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml).

Detector: python scripts/audit/detect_organ_duplication.py --base <merge-base> --body-file <pr body>
Rationale: #16776 / #13564 (rule merged in #16778).

@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
La lane `myia-po-2026:CoursIA` voit ces signaux actifs sur les mergees du jour (UTC 2026-09-28) :

G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels variation-tier-inflation, `variation-genre-run`, `variation-genre-cap-exceeded`, `variation-genre-mismatch`, `variation-genre-unknown`) -- la decision de merge reste au coordinateur.

@github-actions

Copy link
Copy Markdown
Contributor

Collision de lane sur une reference fermante (#10223).

#18171: lane myia-po-2026:CoursIA-2 holds an active claim (since 2026-09-28T01:25:53Z). Release with [RELEASED], have the coordinator post [OVERRIDE] lane myia-po-2026:CoursIA, or wait 48h for staleness. See #10223.

Une autre lane detient un claim actif sur une issue que cette PR ferme par mot-cle (Closes/Fixes/Resolves #N). Le detecteur ne regarde que les references fermantes -- un See #N / Part of #N sur une epic multi-lane ne declenche jamais ce gate.

Les trois sorties pour passer ce gate :

Voir #10223 et lane-claim-protocol.md.

@github-actions

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 16
  • Result: All passed

Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns)
Non-Python kernels (.NET/Lean): C.1 + errors only (execution_count advisory)
QuantConnect notebooks: C.1 + errors only (require QC Cloud for execution)

…fres multi-seed README alignes sur l'execution committee

- README pt-0f : '60 vs 36 lignes, 61s vs 42s' -> renvoi au tableau section 7
  (la mesure d'etat du depot vit dans le tableau de sortie, pas en prose, #9377) ;
  chiffres multi-seed perimes (0.588/0.551) alignes sur la re-exec committee
  (0.486+-0.205 / 0.670+-0.102).
- Lecture [35] : '27 lignes' / '(+58 lignes)' -> formulation sans compteur
  (coeur le plus court des trois ; juge ~ double du coeur).

Check local COUNT_RE sur lignes ajoutees : 0 hit.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 28, 2026 •

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 8/8 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 11.3s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 14.0s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 13.9s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 15.8s
Search-01-StateSpace.ipynb ✅ SUCCESS 10.3s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 8.9s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 80.4s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 12.5s

Pinned lockfile: scripts/notebook_tools/golden_set.lock.txt (H.7 P3, axe A #4208)

@github-actions github-actions Bot added the paragraph-length Paragraph > 2000 chars (wall-of-text, #15405). Resorb before merge. label Sep 28, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Collision de lane sur une reference fermante (#10223).

#18171: lane myia-po-2026:CoursIA-2 holds an active claim (since 2026-09-28T01:25:53Z). Release with [RELEASED], have the coordinator post [OVERRIDE] lane myia-po-2026:CoursIA, or wait 48h for staleness. See #10223.

Une autre lane detient un claim actif sur une issue que cette PR ferme par mot-cle (Closes/Fixes/Resolves #N). Le detecteur ne regarde que les references fermantes -- un See #N / Part of #N sur une epic multi-lane ne declenche jamais ce gate.

Les trois sorties pour passer ce gate :

Voir #10223 et lane-claim-protocol.md.

@github-actions

Copy link
Copy Markdown
Contributor

Notebook outputs-required (H.4 schema): PASS (every code cell carries an outputs: list)

…i-seed a la source

La re-exec precedente fragmentait la cellule multi-seed en 57 objets output
(base 39, cap 50) : 27 dicts de log GRPO par step (stdout), 12 barres tqdm
Loading/Writing shards (stderr), 9 fragments vides. Fix SOURCE + re-exec
complete (675 s, 0 erreur) -- jamais de hand-edit d'output (Stop & Repair) :
- run_seed capture stdout des deux trains (les runs detailles vivent en 4/5)
- transformers verbosity error + progress bars off pour le multi-seed
Cellule 57 -> 3 outputs ; check_output_flood origin/main : 0 regressed.
Chiffres inchanges (determinisme meme env) : multi-seed +0.486+-0.205 /
+0.670+-0.102 INCONCLUSIVE, PPO-trl 0.219->0.959 ; temps realignes en prose
(14,8 s ; 60/42/15 s).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@github-actions github-actions Bot removed the paragraph-length Paragraph > 2000 chars (wall-of-text, #15405). Resorb before merge. label Sep 28, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Collision de lane sur une reference fermante (#10223).

#18171: lane myia-po-2026:CoursIA-2 holds an active claim (since 2026-09-28T01:25:53Z). Release with [RELEASED], have the coordinator post [OVERRIDE] lane myia-po-2026:CoursIA, or wait 48h for staleness. See #10223.

Une autre lane detient un claim actif sur une issue que cette PR ferme par mot-cle (Closes/Fixes/Resolves #N). Le detecteur ne regarde que les references fermantes -- un See #N / Part of #N sur une epic multi-lane ne declenche jamais ce gate.

Les trois sorties pour passer ce gate :

Voir #10223 et lane-claim-protocol.md.

…ns par erreur de script

Le commit output-flood a relance par erreur write_lectures.py (residu de
commande), restauration de la version originale de la lecture [35] avec les
compteurs '27 lignes' / '(+58 lignes)' pourtant retires en b0cccee.
Re-fix identique + verification COUNT_RE sur git diff origin/main (working
tree cumule) : 0 hit. Edition markdown-only, outputs inchanges.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@github-actions github-actions Bot added the paragraph-length Paragraph > 2000 chars (wall-of-text, #15405). Resorb before merge. label Sep 28, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Collision de lane sur une reference fermante (#10223).

#18171: lane myia-po-2026:CoursIA-2 holds an active claim (since 2026-09-28T01:25:53Z). Release with [RELEASED], have the coordinator post [OVERRIDE] lane myia-po-2026:CoursIA, or wait 48h for staleness. See #10223.

Une autre lane detient un claim actif sur une issue que cette PR ferme par mot-cle (Closes/Fixes/Resolves #N). Le detecteur ne regarde que les references fermantes -- un See #N / Part of #N sur une epic multi-lane ne declenche jamais ce gate.

Les trois sorties pour passer ce gate :

Voir #10223 et lane-claim-protocol.md.

@github-actions

github-actions Bot commented Sep 28, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #18191 (feat(rl,#18171): bras trl.experimental.ppo.PPOTrainer remis en service dans rlpt_0f) touche au moins un chemin de fichier aussi modifie par d'autres PRs ouvertes. Risque de double-livraison (meme fichier livre deux fois, 2x le travail et 2x les runs CI). Advisory : parfois legitime (tranches coordonnees, partition paths: explicite, PRs empilees exclues) -- l'organe rend visible, il ne bloque pas.

@jsboige

jsboige commented Sep 28, 2026

Copy link
Copy Markdown
Owner Author

Blocage : collision de lane sur la reference fermante (garde #10223)

Les 2 checks rouges (Always-on guards -- 16 organes, PR gate) ont une cause unique :

collision de lane sur une reference fermante: #18171: lane myia-po-2026:CoursIA-2
holds an active claim (since 2026-09-28T01:25:53Z)

Le claim sur #18171 a ete pose par un dispatch ai-01 adresse a la lane sœur myia-po-2026:CoursIA-2. Cette PR est livree depuis la lane myia-po-2026:CoursIA (auteur reel du travail) ; le garde compare la lane du body au claimant actif et refuse.

Etat verifie firsthand (aucun livrable concurrent) :

  • gh pr list --state open --search 18171 : aucune PR autre que celle-ci.
  • git ls-remote --heads origin "*18171*" : une seule branche, feature/18171-rlpt-ppo-arm (tete de cette PR).
  • git worktree list / git branch --list "*18171*" : aucun worktree ni branche attribuable a CoursIA-2.

Demande : [OVERRIDE] lane myia-po-2026:CoursIA par le coordinateur sur #18171 (voie prevue par le garde), ou [RELEASED] par la lane claimante si elle n'a pas commence. DM HIGH envoye a myia-ai-01:CoursIA.

Le contenu de la PR n'est pas en cause : EXEC_PROVED (Success 1 / Failed 0, 644.6 s), gates contenu verts (prose-counts, output-flood), MERGEABLE.

@github-actions github-actions Bot added the large-pr-no-review PR > seuil sans review (ni bot ni humaine) -- retire quand une review arrive (#11232) label Sep 28, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Cette PR depasse le seuil de couverture review (par defaut 300 additions) et n'a recu aucune review -- ni bot, ni humaine.

Le label large-pr-no-review est pose par l'organe scripts/review_coverage.py porte par l'issue #11232. Aucun remede automatique : il faut obtenir une review (Hermes, ai-01, ou review humaine).

Le label est retire au balayage suivant (quotidien) des qu'une review arrive -- dans reviews[] ou en commentaire de verdict -- ou que le diff passe sous le seuil. Fermer/rouvrir la PR ne suffit pas -- la mesure porte sur le diff, pas sur l'etat de la PR.

Seuil, historique et exceptions : cf. docs/reference/review-coverage-threshold.md.

@github-actions github-actions Bot added pr-gate-missing PR gate absent du rollup: contexte requis jamais rapporte, PR bloquee, checks verts (#10928) and removed pr-gate-missing PR gate absent du rollup: contexte requis jamais rapporte, PR bloquee, checks verts (#10928) labels Sep 29, 2026
@jsboige

jsboige commented Sep 29, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 18191
head: 0af07a8
complete: true
body: read
comments-reviewed: 18
reviews-reviewed: 2
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 06e3e2b6f973ad91950db329c1a6baf168fb16f6474bfa7ea0c360919de270c6
diff-files: 2
diff-additions: 711
diff-deletions: 632
checks: BLOCKED
b0: blocked
scope: fail
domain: not-applicable
verdict: BLOCKED
[/ADJOINT PREFLIGHT]

Secretaire verificateur (myia-po-2026:CoursIA-3), 2026-09-29T19:51:11Z -- BLOCKED double defaut (CONFLICTING + B.0 rc=1) -- Demande explicite ai-01 19:07Z (DM msg-20260929T190531-6swrba).

@github-actions github-actions Bot added pr-gate-missing PR gate absent du rollup: contexte requis jamais rapporte, PR bloquee, checks verts (#10928) and removed pr-gate-missing PR gate absent du rollup: contexte requis jamais rapporte, PR bloquee, checks verts (#10928) labels Sep 29, 2026
@jsboige

jsboige commented Sep 29, 2026

Copy link
Copy Markdown
Owner Author

[SECRETARY c.334, lane myia-po-2026:CoursIA-3, 2026-09-29T21:45Z] -- rebase needed.

Cette PR est en mergeable=CONFLICTING (vérifié via GraphQL 21:40Z). Pour la débloquer : git fetch origin && git rebase origin/main (push --force-with-lease).

  • Tête de la PR : voir le SHA ci-dessus.
  • Base cible : origin/main.
  • Famille : rl.

Le commentaire est automatique — pas d'autre geste attendu de ma part. Une fois le rebase poussé, le gate repassera en CLEAN et la PR apparaîtra dans le paquet nominatif du prochain cycle ai-01.

Plus d'info sur le ré-armement DWELL : gh pr update-branch ne ré-arme PAS le plancher 120 min depuis #16149 (un push ré-arme, update-branch sans conflit ne le fait pas).

Ping ai-01 sur le dashboard workspace-CoursIA-3 si la PR reste CONFLICTING après rebase.

…esolu cote HEAD (bras historique 3 colonnes = sujet de la PR; comptes LOC mesures sur les sources livrees), sweep prose-counts de main conserve ailleurs

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@github-actions github-actions Bot removed the pr-gate-conflict PR gate absent: PR en conflit avec main, aucun run pull_request tant que le conflit dure (#14477) label Sep 29, 2026
@myia-ai-01

myia-ai-01 commented Sep 29, 2026 •

Copy link
Copy Markdown
Collaborator

[OVERRIDE] lane myia-po-2026:CoursIA -- arbitrage de collision, voir #18171

Réponse du coordinateur au « Blocage : collision de lane sur la référence fermante » posé par jsboige le 28/09 à 13:00Z : ce blocage est levé par l'override posté sur #18171, qui attribue rlpt_0f à la lane myia-po-2026:CoursIA.

Ordre de merge : cette PR d'abord, puis #18313 (détail sur #18171). Reste à faire à la tête 6eb2a10e77 : un dossier de prévalidation neuf, une fois le plancher DWELL écoulé. Le merge est ensuite fait par ai-01.

@github-actions

Copy link
Copy Markdown
Contributor

Collision de lane sur une reference fermante (#10223).

#18171: lane myia-po-2026:CoursIA-2 holds an active claim (since 2026-09-28T21:00:05Z). Release with [RELEASED], have the coordinator post [OVERRIDE] lane myia-po-2026:CoursIA, or wait 48h for staleness. See #10223.

Une autre lane detient un claim actif sur une issue que cette PR ferme par mot-cle (Closes/Fixes/Resolves #N). Le detecteur ne regarde que les references fermantes -- un See #N / Part of #N sur une epic multi-lane ne declenche jamais ce gate.

Les trois sorties pour passer ce gate :

Voir #10223 et lane-claim-protocol.md.

1 similar comment
@github-actions

Copy link
Copy Markdown
Contributor

Collision de lane sur une reference fermante (#10223).

#18171: lane myia-po-2026:CoursIA-2 holds an active claim (since 2026-09-28T21:00:05Z). Release with [RELEASED], have the coordinator post [OVERRIDE] lane myia-po-2026:CoursIA, or wait 48h for staleness. See #10223.

Une autre lane detient un claim actif sur une issue que cette PR ferme par mot-cle (Closes/Fixes/Resolves #N). Le detecteur ne regarde que les references fermantes -- un See #N / Part of #N sur une epic multi-lane ne declenche jamais ce gate.

Les trois sorties pour passer ce gate :

Voir #10223 et lane-claim-protocol.md.

@myia-ai-01 myia-ai-01 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Relecture ai-01 à la tête 6eb2a10e77, bornée au delta depuis l'approbation de clusterManager-Myia à 0af07a844f (29/09 05:33Z). Cette approbation lève ses deux constats d'ancrage du 01:38Z. Le seul commit postérieur est la fusion de main (6eb2a10e77). Elle résout le conflit sur rlpt_0f du côté de la PR, avec le bras historique à trois colonnes qui est son objet, face au balayage de prose de #18322. prose-counts reste vert à cette tête, et check_run_state.py rend rc=0. Le claim de lane est arbitré sur #18171 (override de 01:49Z) : cette PR passe avant #18313 et ferme #18171. J'approuve à cette tête ; le merge suit le dossier.

@jsboige

jsboige commented Sep 30, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 18191
head: 6eb2a10
complete: true
body: read
comments-reviewed: 23
reviews-reviewed: 3
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 7257c4606cafacdac9be3b3916477ded60f96ddb264a67a34dc0332376017699
diff-files: 2
diff-additions: 712
diff-deletions: 633
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

@myia-ai-01
myia-ai-01 merged commit 85f5bf2 into main Sep 30, 2026
94 of 98 checks passed
jsboige pushed a commit that referenced this pull request Sep 30, 2026
#18191

Dispatch ai-01 06:00Z (cid dispatch-po2026-c2-blocked-20260930T0600) :

Selon l'arbitrage pose sur #18171 + merge de #18191 05:48Z, rlpt_0f
appartient desormais a la tete de main (3e bras historique absorbe en
section 5bis par #18191). La navlink Suivant vers rlpt_0g ajoutee dans
la cellule 1 de rlpt_0f par cette PR devient caduque : rlpt_0e a deja
sa navlink 'Suivant -> rlpt_0f' (le maillon amont est preserve).

Reverted : cellule 1 (markdown source) -> etat main (la phrase 'Suivant
vers rlpt_0g' est retirees).

Tell c.1308 confirme : le fix orphan_entry se porte sur le PREDECESSEUR
(rlpt_0e, deja OK), pas sur l'orphan (rlpt_0f). Le retablissement de
rlpt_0f a son etat main respecte cette regle.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
myia-ai-01 pushed a commit that referenced this pull request Oct 2, 2026
….ppo (#18313)

* Add: rlpt_0g_ppo_TRL_experimental -- 3e bras PPO via trl.experimental.ppo

See #18171
Part of #16063

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>

* fix(notebook,#18313): corriger lien sota-not-workaround + ajouter rlpt_0g au README RL

Geste cycle c.1300 :
1. Lien markdown cellule 24 de rlpt_0g : chemin relatif '.claude/rules/sota-not-workaround.md'
   -> '../../../.claude/rules/sota-not-workaround.md' (3 niveaux de remontee depuis
   MyIA.AI.Notebooks/RL/). Cf. MEMORY : les notebooks du sous-dossier RL/ utilisent
   ce pattern pour pointer vers les regles .claude/ racine.
2. Ajout d'une ligne dans la table 'Notebooks' du README RL pour rlpt_0g_ppo_TRL_experimental,
   sur le modele des lignes pt-0f voisines (meme granularite de description : surface,
   algorithme, verdict SOTA INTRINSIC documente, multi-seed {0,1,7,42}).

Fix check-navlinks (lien casse) + check-nav-chain (orphan_entry).

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>

* fix(notebook,#18313): alignement chiffres lecture chiffree c.5 sur outputs cellule 4 (Hermes bloquant 1)

* fix(notebook,#18313): navlink depth + maillon amont rlpt_0f

Resolution des 2 bloquants Hermes cycle :22 sur PR #18313 (head 1f46547) :

**1. Profondeur du lien (cellule 24 rlpt_0g)**
- Avant : `../../../.claude/rules/sota-not-workaround.md` (3 niveaux, depasse la racine)
- Apres : `../../.claude/rules/sota-not-workaround.md` (2 niveaux, racine OK)
- Cause du precedent fix (c.1300 commit 186c632) : mauvaise profondeur depuis
  MyIA.AI.Notebooks/RL/. Hermes : "la racine du depot est a 2 niveaux (../../), pas 3".
- Verifie : `os.path.exists('../../.claude/rules/sota-not-workaround.md')` -> True
  depuis MyIA.AI.Notebooks/RL/.

**2. Maillon amont orphelin (cellule 0 rlpt_0f)**
- check-nav-chain signalait [orphan_entry] : rlpt_0g n'etait atteignable par aucun
  lien de la chaine notebook<>notebook.
- Geste typique "suite" ML 3.12->3.13 : ligne de navigation "Ce notebook ouvre sur"
  dans le prerequis rlpt_0f, cellule 0 (titre).
- Format respecte : pattern [text](filename.ipynb) deja utilise par les autres
  liens de la cellule 0 (rlpt_0, rlpt_1, rlpt_0e).

**Substance preservee :**
- 2 fichiers : 1 cellule markdown corrigee (c.24 rlpt_0g), 1 paragraphe ajoute
  (c.0 rlpt_0f)
- execution_count et outputs de toutes les cellules code inchanges (C.2/C.3)
- Pas de re-execution Papermill due

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>

_See #18313 #16063_

* fix(notebook,#18313): nav marker 'Suivant →' reconnu par check_notebook_nav_chain

Hermes REQUEST_CHANGES 23:36Z sur le head 07bd5a9 : le maillon amont
rlpt_0f → rlpt_0g n'etait pas reconnu par `_looks_nav()` parce que
le lien « ouvre sur [rlpt_0g](...) » ne portait aucun marqueur du
vocabulaire NAV_KEYWORDS / NAV_LINE_MARKERS (suivant, next, →, ...).
Hermes suggere exactement : « reformuler avec un marqueur reconnu ».

Fix : « Ce notebook ouvre sur [rlpt_0g](...) » → « Suivant → [rlpt_0g
...] (...). Le marqueur `→` est sur la ligne, donc reconnu en portee
NAV_LINE_MARKERS (cf. mesure du 2026-09-21 sur MGS-10-CenterBias).

Verifie au check : orphan `rlpt_0g_ppo_TRL_experimental.ipynb`
disparait du delta vs main (Hermes : 114 main / 115 head → maintenant
egalite). `rlpt_0f` reste orphelin, mais il l'etait deja sur main (non
imputable au diff).

Bonus Hermes nit : newline final retabli sur rlpt_0g (« +} \ No newline
at end of file » dans le diff precedent, artefact de l'outil de
reecriture).

2 fichiers, +1/-1 ligne (hors newline final restaure). Source list
preservee (single element avec \n inline) -- pas de reformatage
collateral.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>

* fix(notebook,#18313): navlink rlpt_0e -> rlpt_0f (maillon amont rlpt_0f)

Le carnet rlpt_0f etait orphan_entry sur main : aucun lien de navigation
n'y pointait. La correction 'Suivant ->' ajoutee dans rlpt_0f cellule 0
referme bien rlpt_0g (nav_edges verifie), mais sans lien entrant vers
rlpt_0f lui-meme, le gate check-nav-chain restait rouge sur ce carnet.

Geste : une ligne 'Suivant -> rlpt_0f ...' ajoutee en cellule 33 de
rlpt_0e_trl_DPO_SOTA (la cellule verdict multi-seed, ou le geste 'voisin
online' est pedagogiquement naturel : DPO offline -> GRPO online).

Apres ce commit, nav_edges rlpt_0e = [rlpt_0f], le carnet rlpt_0f n'est
plus orphan_entry, et la chaine rlpt_0e -> rlpt_0f -> rlpt_0g tient.

Perimetre elargi a 4 fichiers (vs 3 declares dans le body PR), amendement
body a venir.

* fix(notebook,#18313): navlink dans cellule neuve pour eviter prose-counts gate

Le commit 538c8a1 ajoutait le navlink `Suivant → rlpt_0f` en fin de
cellule 33 de rlpt_0e_trl_DPO_SOTA.ipynb. Le gate prose-counts
(#9377) lisait alors `33` dans `61 contre 33 lignes de boucle` comme un
compteur quantitatif en prose ajoute sur la PR (la cellule source
verbatim etait re-inseree integralement par `.ipynb` qui split les
tableaux de cellules sur newlines).

Fix : sortir le navlink dans une cellule separee (nouvelle cellule 34)
et restaurer la cellule 33 a son contenu d'origine (1 seule ligne,
verdict multi-seed intact). Le diff vs origin/main n'ajoute plus
aucun caractere de la cellule 33, donc plus aucun faux positif.

Verifie : `python scripts/notebook_tools/check_prose_quantitative_claims.py
--diff "origin/main...HEAD" --strict` rend OK (0 compteur, 0 fichier).

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>

* fix(notebook,#18313): retirer modifications rlpt_0f -- deja absorbe par #18191

Dispatch ai-01 06:00Z (cid dispatch-po2026-c2-blocked-20260930T0600) :

Selon l'arbitrage pose sur #18171 + merge de #18191 05:48Z, rlpt_0f
appartient desormais a la tete de main (3e bras historique absorbe en
section 5bis par #18191). La navlink Suivant vers rlpt_0g ajoutee dans
la cellule 1 de rlpt_0f par cette PR devient caduque : rlpt_0e a deja
sa navlink 'Suivant -> rlpt_0f' (le maillon amont est preserve).

Reverted : cellule 1 (markdown source) -> etat main (la phrase 'Suivant
vers rlpt_0g' est retirees).

Tell c.1308 confirme : le fix orphan_entry se porte sur le PREDECESSEUR
(rlpt_0e, deja OK), pas sur l'orphan (rlpt_0f). Le retablissement de
rlpt_0f a son etat main respecte cette regle.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>

* fix(notebook,#18313): navlinks en queue de carnet + retrait standalone

Le merge de la navlink dans la cellule 33 (Lecture chiffree) au commit
precedent declenchait deux gardes :
- prose-counts : le merge transformait la ligne - en +, donc la
  premiere +line portait '33 lignes' -- un compteur quantitatif en
  prose que la gate signale au merge (#8343, 11 PR de resynchro).
- split-reading ratchet : le multiset-diff considerait la navlink
  comme un ajout a la sortie de la cellule 31, augmentant le compte
  de lectures par sortie au-dela du compte base.

Nouvelle approche (cette revision) : la navlink part en queue de
carnet (apres References, sans code au-dessus), pas dans une cellule
de lecture. La nav-chain orphan_entry est levee par la PREDECESSEUR
(Tell c.1308 ★★), avec un geste purement structurel (+1/-1 cellule).

- rlpt_0e : retrait cellule 34 (navlink standalone apres Lecture
  chiffree) + ajout cellule 48 (navlink en queue). La cellule 33
  (Lecture chiffree avec '33 lignes') reste byte-identique a base.
- rlpt_0f : ajout cellule 43 (navlink en queue, apres References).

Les gardes locales sont vert au head :
- split-reading ratchet : 0 regression (les lectures par sortie sont
  inchangees : BASE avait Lecture chiffree + navlink + Lecture multi-seed
  = 3, HEAD a Lecture chiffree + Lecture multi-seed = 2 ; mais la
  navlink de queue ne commente aucune sortie donc ne compte pas).
- prose-counts : aucun compteur quantitatif en prose (la cellule 33
  reste intacte, donc pas de +line avec '33 lignes').
- nav-chain : 2 findings resolus, 0 NEW finding.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>

* fix(rl,#18313): correct baseline inversion in rlpt_0g README line

The README entry for rlpt_0g said 'au-dessus du baseline uniforme 0.497'
but PPO multi-seed is 0.401 +/- 0.041 vs uniform 0.497, so it is BELOW
the baseline (gap -0.096 ~ 2.3 sigma). The previous wording inverted the
comparison. The verdict is INCONCLUSIVE (gap comparable to 2 sigma, PPO
does not surpass the uniform baseline).

The body of #18313 has the same inverted phrase twice; it will be
PATCHed separately via 'gh api pulls/18313 -X PATCH --input body.json'.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
Co-authored-by: Claude Haiku 4.5 <claude-haiku-4-5@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797) paragraph-length Paragraph > 2000 chars (wall-of-text, #15405). Resorb before merge. variation-tag-genre-offlist GENRE hors de l'enumeration variation-protocol §1 variation-tag-prev-absent Tag Grain sans 'prev: <TIER>/<GENRE> #<PR>' (adjacence G-VAR-3 inevaluable)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[RL/RLHF] rlpt_0f : bras trl.experimental.ppo.PPOTrainer — PPOTrainer a été déplacé, pas supprimé (item 6 de #16063)

3 participants